<?php
// +----------------------------------------------------------------------
// | 萤火商城系统 [ 致力于通过产品和服务，帮助商家高效化开拓市场 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2023 https://www.yiovo.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 这不是一个自由软件，不允许对程序代码以任何形式任何目的的再发行
// +----------------------------------------------------------------------
// | Author: 萤火科技 <admin@yiovo.com>
// +----------------------------------------------------------------------
declare (strict_types = 1);

namespace app\common\model\ding;

use cores\BaseModel;

/**
 * 商品分类模型
 * Class Category
 * @package app\common\model
 */
class Letter extends BaseModel {
	// 定义表名
	protected $name = 'ding_letter';

	// 定义主键
	protected $pk = 'type_id';

	public function image() {

		$module = self::getCalledModule();
		return $this->hasOne("app\\{$module}\\model\\UploadFile", 'file_id', 'image_id')
		;
	}

	/**
	 * 分类详情
	 * @param int|array $where
	 * @param array $with
	 * @return array|null|static
	 */
	public static function detail($where, array $with = []) {
		return static::get($where, $with);
	}

	/**
	 * 获取列表记录
	 * @param array $param
	 * @return array
	 * @throws \think\db\exception\DataNotFoundException
	 * @throws \think\db\exception\DbException
	 * @throws \think\db\exception\ModelNotFoundException
	 */
	public function getList(array $param = []) {
		$list = $this->getAll($param);
		return $list;
	}

	/**
	 * 获取所有记录
	 * @param array $param
	 * @return \think\Collection
	 * @throws \think\db\exception\DataNotFoundException
	 * @throws \think\db\exception\DbException
	 * @throws \think\db\exception\ModelNotFoundException
	 */
	protected function getAll(array $param = []) {
		// 默认查询参数
		$params = $this->setQueryDefaultValue($param, [
			'status' => -1, // 状态(1显示 0隐藏 -1全部)
		]);
		// 设置检索条件
		$filter = [];
		$params['status'] > -1 && $filter[] = ['status', '=', $params['status']];
		// 查询列表数据
		return $this->with(['image'])
			->where($filter)
			->order(['sort', 'type_id'])
			->select();
	}

}
